이 HIP 에코시스템 는 AMD와 NVIDIA 아키텍처 간 소스코드 호환성을 위한 얇은 추상화 계층으로 설계되었습니다. 이는 ROCm (Radeon Open Compute) 스택을 활용하며, 특히 이질적 시스템 아키텍처 (HSA) 런타임과 커널 융합 드라이버 (KFD)를 사용합니다.
1. 초기화 부트스트랩
초기화는 hsa_init(0, ...) 및 hsaKmtOpenKFD(...)를 통해 하위 레벨 커널 드라이버 핸드셰이크로 시작됩니다. 이러한 설정 호출은 사용자 공간 응용 프로그램과 AMD GPU 하드웨어 사이의 통신 다리가 됩니다.
2. 토폴로지 및 속성 탐지
커널 실행 전 런타임은 다음 함수를 사용해 하드웨어 능력을 식별합니다: hsaKmtAcquireSystemProperties 및 hsaKmtGetNodeProperties를 통해 물리 메모리를 GPU 노드에 매핑하고, hsaKmtMapMemoryToGPUNodes디바이스의 페이지 테이블 가시성을 보장합니다.
3. 컴파일 파이프라인
CUDA와 HIP 사이의 다리는 두 가지 기둥에 의해 구축됩니다: hipify-perl (정규식 기반 트랜스파일러) 및 hipcc (컴파일러 래퍼).
# 포팅 워크플로 예시
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out
4. 버전 관리 로직
호환성은 정확한 공식을 통해 보장되며, 다음 조건을 충족하도록 합니다: hipRuntimeGetVersion HSA 확장 테이블과 일치합니다:
$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>